package com.qfedu.common;

import lombok.Data;

/**
 * R类是所有控制器中的方法的返回值类型
 *
 * 它的作用就是统一后端请求处理的返回结果，都是同一个类型，那么前端取值就方便，
 * 这是为了方便前后端开发对接而设计
 * @param <T>
 */
@Data
public class R <T> {

    private int status;

    private String msg;

    private T data;

    private R(int status, String msg, T data){
        this.status = status;
        this.msg= msg;
        this.data = data;
    }

    public static <E> R<E> ok(E data){
        return ok(200, data);
    }

    public static <E> R<E> ok(int status, E data){
        return new R<>(status, "OK", data);
    }

    public static <E> R<E> error(int status, String msg){
        return new R<>(status, msg, null);
    }

    public static <E> R<E> error(int status){
        return error(status, "");
    }
}
